※ 본 문서는 PC 환경에 최적화되어있습니다.

1 자료 구득

자료는 대부분 ’서울시 열린데이터 광장’에서 구득하였으며, 반려견 자료의 경우 서울시 정보소통광장에서 구득하였습니다. 다만, 이는 목표 및 실적 자료이다보니 공공데이터 포털에서 구득한 자료와 일부 구가 차이가 있어 이를 수정해 반영하였습니다. 서울시 셰이프 파일은 eTL에 올라온 ’Study Resource’에서 구득하였습니다.

서울시 열린데이터 광장

  • 노년부양비
  • 노령화지수
  • 인구 데이터
  • 1인당 주거면적
  • 유년 부양비

공공데이터포털

  • 반려견 수

eTL - Study Resource

  • 시군구 셰이프 파일

2 사용한 라이브러리

라이브러리 목록

tidyverse

자료 불러오기
- readr : 파일 불러오기
- dplyr: 데이터프레임 다루기

corrplot

변수간 상관관계를 분석
- corrplot

mapping

데이터를 지도로 구현
- sf
- tmap
- rgdal
- ggplot

DT

동적인 표 표현
- DT

3 인구-반려견

3.1 인구 데이터프레임 생성

구득한 인구데이터의 필요 없는 행과 열을 정리하여 불러왔습니다. 또한 반려견과 인구의 비를 구하기 위해 인구수 데이터의 구분자(,)를 제거하여 추후 숫자로 인식될 수 있게 하였습니다.

# A tibble: 25 x 2
   자치구   인구  
   <chr>    <chr> 
 1 종로구   161869
 2 중구     136488
 3 용산구   245185
 4 성동구   308979
 5 광진구   366972
 6 동대문구 363023
 7 중랑구   402024
 8 성북구   454744
 9 강북구   317695
10 도봉구   335631
# ... with 15 more rows

3.2 반려견 데이터프레임 생성

구득한 데이터가 스프레드시트 형식이 아닌 관계로 25개 구의 이름과 수치를 기입하였습니다.

# A tibble: 25 x 2
   자치구   반려견수
   <chr>       <dbl>
 1 종로구       5986
 2 중구         5745
 3 용산구      10426
 4 성동구      12125
 5 광진구      15198
 6 동대문구    12620
 7 중랑구      12965
 8 성북구      13490
 9 강북구      13641
10 도봉구      14676
# ... with 15 more rows

3.3 반려견/인구 비 구하기

무결성을 확인하기 위하여 반려견과 인구의 데이터프레임을 조인(Join)한 후, 값 변수 열만 추출한 뒤, 추출한 데이터를 반복문을 사용하여 비를 구하였습니다.

3.4 데이터 합치기

위의 값 변수 열을 가지고 새로운 데이터프레임을 만들었습니다. 추후 지도 dbf파일과 조인하기 쉽도록 자치구 변수 명을 SIG_KOR_NM으로 변경하였습니다.

# A tibble: 25 x 4
   SIG_KOR_NM popvector petvector p2p_ratio
   <chr>          <dbl>     <dbl>     <dbl>
 1 종로구        161869      5986    0.0370
 2 중구          136488      5745    0.0421
 3 용산구        245185     10426    0.0425
 4 성동구        308979     12125    0.0392
 5 광진구        366972     15198    0.0414
 6 동대문구      363023     12620    0.0348
 7 중랑구        402024     12965    0.0322
 8 성북구        454744     13490    0.0297
 9 강북구        317695     13641    0.0429
10 도봉구        335631     14676    0.0437
# ... with 15 more rows

3.5 상관관계 분석

두 변수를 정규화한 후 상관관계를 분석하였습니다.

3.6 산점도 그리기

산점도로 두 변수간 관계를 확인할 수 있었습니다.


Call:
lm(formula = petvector ~ popvector, data = table1)

Residuals:
    Min      1Q  Median      3Q     Max 
-4212.7  -849.0  -356.6  1133.2  5674.9 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1.355e+03  1.400e+03   0.968    0.343    
popvector   3.169e-02  3.336e-03   9.499    2e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2091 on 23 degrees of freedom
Multiple R-squared:  0.7969,    Adjusted R-squared:  0.788 
F-statistic: 90.23 on 1 and 23 DF,  p-value: 1.999e-09

인구수와 반려견수가 강한 상관관계를 보이는 것은 인구수가 많을수록 반려견을 많이 키우기 때문에 당연한 결과라고 볼 수 있습니다.



4 반려견-인구 비 도식

구별 반려견/인구 비를 표현하기 위해 지도를 전국 시군구 지도를 사용하였습니다.

4.1 .shp 불러오기

eTL에서 받은 시군구 셰이프파일을 불러왔습니다. 한글 필드의 깨짐을 방지하기 위해 인코딩을 UTF-8로 설정하였습니다.
불러오기를 시행하고 head()함수를 사용하여 데이터를 잘 불러왔는지 확인하였습니다.

OGR data source with driver: ESRI Shapefile 
Source: "C:\Users\dydgn\OneDrive - 공주대학교\바탕 화면\Analytical_Methods_for_Spatial_Information_Assignment\Echo-03\data", layer: "kr_si_gun-gu"
with 250 features
It has 3 fields
class       : SpatialPolygonsDataFrame 
features    : 6 
extent      : 950928.8, 966017.8, 1945376, 1959343  (xmin, xmax, ymin, ymax)
crs         : +proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs 
variables   : 3
names       : SIG_CD,    SIG_ENG_NM, SIG_KOR_NM 
min values  :  11110, Dongdaemun-gu,     광진구 
max values  :  11230,    Yongsan-gu,       중구 

4.2 속성을 통한 선택

분석을 위해서는 서울 구 데이터만 필요하였으므로 시군구 코드가 ’11740’보다 작거나 같은 구만 선택하였습니다.

class       : SpatialPolygonsDataFrame 
features    : 6 
extent      : 950928.8, 966017.8, 1945376, 1959343  (xmin, xmax, ymin, ymax)
crs         : +proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs 
variables   : 3
names       : SIG_CD,    SIG_ENG_NM, SIG_KOR_NM 
min values  :  11110, Dongdaemun-gu,     광진구 
max values  :  11230,    Yongsan-gu,       중구 

4.3 데이터프레임에 조인

기존에 만들어둔 인구수, 반려견수, 반려견-인구비의 데이터프레임과 조인을 하였습니다. 해당 작업 후에 조인이 잘 이루어졌는지 확인하였습니다.

4.4 지도 도식

‘tmap’라이브러리를 사용하여 도식하였습니다.



5 외국인-반려견

그런데, 아래의 기사를 접하고, https://www.mk.co.kr/news/society/view/2019/01/58954/

저희 역시 용산구가 반려견/인구 수치가 높게 나왔는데 이에 대해 기사는 외국인이 많기에 그런 것이라고 분석한 것을 봐 실제로 ‘외국인’이 반려견을 키우는 데 중요한 변수인지 알아보고자 하였습니다.

5.1 자료 추출

구득한 외국인수데이터의 필요 없는 행과 열을 정리하여 구별 외국인수 데이터를 추출하였습니다.

# A tibble: 25 x 2
   자치구   외국인인구
   <chr>         <dbl>
 1 종로구         8851
 2 중구           8671
 3 용산구        14613
 4 성동구         7990
 5 광진구        14715
 6 동대문구      13793
 7 중랑구         4736
 8 성북구        10249
 9 강북구         3557
10 도봉구         1995
# ... with 15 more rows

전체인구 자료와 등록반려견수 자료를 추출하여 새로운 데이터 프레임을 생성하였습니다.

# A tibble: 25 x 4
   자치구    dogs 외국인인구 전체인구
   <chr>    <dbl>      <dbl>    <dbl>
 1 종로구    5986       8851   161869
 2 중구      5745       8671   136488
 3 용산구   10426      14613   245185
 4 성동구   12125       7990   308979
 5 광진구   15198      14715   366972
 6 동대문구 12620      13793   363023
 7 중랑구   12965       4736   402024
 8 성북구   13490      10249   454744
 9 강북구   13641       3557   317695
10 도봉구   14676       1995   335631
# ... with 15 more rows

5.2 외국인/전체인구 비

5.3 상관관계 분석

외국인수/전체인구수와 반려견수간의 상관관계를 분석하였습니다.

분석 결과 음의 상관관계를 보였는데, 이는 전체 인구 대비 외국인의 수가 많은 지역일 수록 등록된 반려동물의 수가 적음을 의미합니다.

5.4 지도 도식

저희가 분석한 결과 기사와는 다르게 외국인은 반려견을 키우는 데 있어 변수로 작용하지 않고 이를 넘어 반려견을 내국인에 비해 더 키우지 않는다는 것을 알 수 있었습니다.



6 외국인 소득-반려견

본 조는 내국인이 외국인에 비해 더 키우는 것은 한국이라는 지역에 머무르는 기간이 더 길기 때문이라고 추정하였습니다.

이에 따라 외국인 내에서도 체류 기간에 따라 반려견을 키우는 정도가 차이 있을 것이라고 생각하였습니다. 그러나 외국인마다 특정 구에 체류하는 기간을 안다는 것은 현 비자 시스템 상 불가능했고 이에 따라 소득을 참고하기로 하였습니다.

출처: Gershon Feder, “On the relation between origin income and migration”,The Annals of Regional Science 16 (1982): 46–61


출처 : Francesc Ortega , Giovanni Peri, “Openness and income: The roles of trade and migration”, Journal of International Economics vol. 92, 2, pp.231-251

그 이유로는 위에 나와 있듯이 소득이 높을수록 이주를 더 빨리, 즉 체류를 더 짧게 한다는 것이기 때문이었습니다. 따라서 저희는 이를 알아보기 위해 아래의 과정을 진행하였습니다.

6.1 동별 외국인수 자료 추출

국내 체류 외국인들이 어떤 직무에서 가장 많이 일하는지를 알아보고자 비자 유형별 외국인들이 몇 명 있는지 알아보았습니다.

x
문화예술(D-1) 39
유학(D-2) 27,773
기술연수(D-3) 49
일반연수(D-4) 11,597
취재(D-5) 83
종교(D-6) 537
주재(D-7) 753
기업투자(D-8) 3,222
무역경영(D-9) 594
구직(D-10) 2,514
교수(E-1) 902
회화지도(E-2) 3,878
연구(E-3) 621
기술지도(E-4) 68
전문직업(E-5) 553
예술흥행(E-6) 472
특정활동(E-7) 7,971
비전문취업(E-9) 4,291
선원취업(E-10) 4
방문동거(F-1) 18,063
거주(F-2) 12,506
동반(F-3) 7,983
영주(F-5) 45998
결혼이민(F-6) 21504
기타(G-1) 2,962
관광취업(H-1) 1,261
방문취업(H-2) 93,201
기타 3,834

6.2 대표 직업 선정

각 비자별 외국인들이 총 몇 명 있는지를 order()함수를 통해 내림차순 정리하였습니다.

이 때, 1~8등, 13~15등을 차지하는 D-2비자, D-4비자, D-10와 F, G, H 비자는 논의 대상에서 제외했습니다. 이는 구하고자 하는 바는 비자 별 외국인 수가 아닌 구별 외국인 대표직업군 소득합계인데 해당 비자들은 이를 알기에 힘들기 때문입니다.

D-2, D-4 비자는 각각 유학생, 연수생, 구직자이기에 소득이 없는 사람들의 비자이며 F, G, H 비자는 결혼, 동거 등의 비자로 그들 소득의 평균을 가늠하기 힘들 정도로 그 값의 편차가 크기에 배제하였습니다.

x
방문취업(H-2) 93,201
영주(F-5) 45998
유학(D-2) 27,773
결혼이민(F-6) 21504
방문동거(F-1) 18,063
거주(F-2) 12,506
일반연수(D-4) 11,597
동반(F-3) 7,983
특정활동(E-7) 7,971
비전문취업(E-9) 4,291
회화지도(E-2) 3,878
기타 3,834
기업투자(D-8) 3,222
기타(G-1) 2,962
구직(D-10) 2,514
관광취업(H-1) 1,261
교수(E-1) 902
주재(D-7) 753
연구(E-3) 621
무역경영(D-9) 594
전문직업(E-5) 553
종교(D-6) 537
예술흥행(E-6) 472
취재(D-5) 83
기술지도(E-4) 68
기술연수(D-3) 49
문화예술(D-1) 39
선원취업(E-10) 4

6.3 구별 직업 현황으로 변환

방대한 자료들 중 선정된 대표 직업군 5개에 대해서만 구별 현황을 알아보았습니다.

# A tibble: 25 x 6
   자치구 `기업투자(D-8)` `교수(E-1)` `회화지도(E-2)` `특정활동(E-7)`
   <chr>  <chr>           <chr>       <chr>           <chr>          
 1 종로구 139             42          63              493            
 2 중구   215             29          28              443            
 3 용산구 1,079           122         690             1,086          
 4 성동구 39              33          85              183            
 5 광진구 32              66          102             262            
 6 동대문구~ 70              97          134             200            
 7 중랑구 12              2           43              59             
 8 성북구 49              90          151             189            
 9 강북구 9               13          62              42             
10 도봉구 5               2           75              33             
# ... with 15 more rows, and 1 more variable: `비전문취업(E-9)` <chr>

6.4 자료 병합

우선, 해당 직업군 외국인/전체인구 비율을 알고자 하였으므로 전체인구 자료를 추출, 병합하였습니다.

# A tibble: 25 x 2
   자치구   인구   
   <chr>    <chr>  
 1 종로구   161,869
 2 중구     136,488
 3 용산구   245,185
 4 성동구   308,979
 5 광진구   366,972
 6 동대문구 363,023
 7 중랑구   402,024
 8 성북구   454,744
 9 강북구   317,695
10 도봉구   335,631
# ... with 15 more rows
   자치구 기업투자(D-8) 교수(E-1) 회화지도(E-2) 특정활동(E-7) 비전문취업(E-9)
1  강남구           375        13           463           905             199
2  강동구            26         3           145            94             218
3  강북구             9        13            62            42              89
4  강서구            34         9           109           197             222
5  관악구            24        90           175           280             132
6  광진구            32        66           102           262             120
7  구로구            79         5            80           146             317
8  금천구            22         -            28           118             495
9  노원구             9        53           164           106              24
10 도봉구             5         2            75            33             162
      인구
1  550,209
2  440,390
3  317,695
4  598,273
5  517,334
6  366,972
7  439,371
8  251,820
9  537,303
10 335,631
 [ reached 'max' / getOption("max.print") -- omitted 15 rows ]

이후 나눗셈을 위해 각 변수들 내 값들을 수치형 자료로 변환하는 과정을 거쳤습니다.

6.5 각 변수들 간 비율 계산 및 자료 병합

해당 직업군 외국인/내국인 수를 구하고, 각 직업군의 소득순위를 구하기 위해 자료를 병합하였습니다.

# A tibble: 25 x 6
   `f_job_pop$자치구`  D8_ratio    E1_ratio E2_ratio  E7_ratio  E9_ratio
   <chr>                  <dbl>       <dbl>    <dbl>     <dbl>     <dbl>
 1 강남구             0.000682   0.0000236  0.000841 0.00164   0.000362 
 2 강동구             0.0000590  0.00000681 0.000329 0.000213  0.000495 
 3 강북구             0.0000283  0.0000409  0.000195 0.000132  0.000280 
 4 강서구             0.0000568  0.0000150  0.000182 0.000329  0.000371 
 5 관악구             0.0000464  0.000174   0.000338 0.000541  0.000255 
 6 광진구             0.0000872  0.000180   0.000278 0.000714  0.000327 
 7 구로구             0.000180   0.0000114  0.000182 0.000332  0.000721 
 8 금천구             0.0000874 NA          0.000111 0.000469  0.00197  
 9 노원구             0.0000168  0.0000986  0.000305 0.000197  0.0000447
10 도봉구             0.0000149  0.00000596 0.000223 0.0000983 0.000483 
# ... with 15 more rows

6.6 각 직업별 소득 고려

각 직종에 대해 1년 차에 평균적으로 지급하는 월급을 인터넷을 통해 구득하였습니다.

E7 비자 : 통역, 번역가 등 전문, 준전문, 숙련기능 직종 > 230만 원 이상
E9 비자 : 제조업, 건설업 등 비전문 단순 노동 > 180만 원 이상
E2 비자 : (학원, 기업 등의) 원어민 강사 > 250만 원 이상
D8 비자 : 외국인 투자 기업(법인)을 설립, 주로 국내 기업 임원으로 활동 > 4500만 원 이상
E1 비자 : 대한민국의 대학 또는 이에 준하는 기관, 전문대학에서 연구, 연구지도 등의 활동에 대한 취업비자 > 780만원 이상

6.7 결측치 제거

금천구에서 E1 비자를 받은 사람이 한 명도 없기에 이를 0으로 바꿔주는 작업을 시행하며 비율*소득의 값을 알아내었습니다.

      f_job_pop$자치구 D8_income E1_income E2_income E7_income E9_income
 [1,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
 [2,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
 [3,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
 [4,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
 [5,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
 [6,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
 [7,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
 [8,]            FALSE     FALSE      TRUE     FALSE     FALSE     FALSE
 [9,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
[10,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
[11,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
[12,]            FALSE     FALSE     FALSE     FALSE     FALSE     FALSE
 [ getOption("max.print") 에 도달했습니다 -- 13 행들을 생략합니다 ]
# A tibble: 25 x 6
   `f_job_pop$자치구` D8_income E1_income E2_income E7_income E9_income
   <chr>                  <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
 1 강남구                3.07     0.0184     0.210     0.378    0.0651 
 2 강동구                0.266    0.00531    0.0823    0.0491   0.0891 
 3 강북구                0.127    0.0319     0.0488    0.0304   0.0504 
 4 강서구                0.256    0.0117     0.0455    0.0757   0.0668 
 5 관악구                0.209    0.136      0.0846    0.124    0.0459 
 6 광진구                0.392    0.140      0.0695    0.164    0.0589 
 7 구로구                0.809    0.00888    0.0455    0.0764   0.130  
 8 금천구                0.393    0          0.0278    0.108    0.354  
 9 노원구                0.0754   0.0769     0.0763    0.0454   0.00804
10 도봉구                0.0670   0.00465    0.0559    0.0226   0.0869 
# ... with 15 more rows

6.8 외국인 총 소득 계산 (구별, 대표 직업 5개)

# A tibble: 25 x 2
   `f_job_pop$자치구` `rowSums(income_table)`
   <chr>                                <dbl>
 1 강남구                               3.74 
 2 강동구                               0.491
 3 강북구                               0.289
 4 강서구                               0.456
 5 관악구                               0.599
 6 광진구                               0.825
 7 구로구                               1.07 
 8 금천구                               0.883
 9 노원구                               0.282
10 도봉구                               0.237
# ... with 15 more rows

6.9 외국인 소득-반려견 수 상관관계 분석

외국인 소득과 반려견 수와의 상관관계를 알고자 자료를 병합하였습니다.

income dogs
income 1.0000000 -0.3095469
dogs -0.3095469 1.0000000

상관관계를 도출한 결과 –0.31이라는 상당히 높은 상관관계가 도출되었습니다.

즉, 소득이 높을수록 반려견을 적게 키운다는 사실을 알 수 있었습니다. 앞서 인용한 논문에서처럼 고소득 외국인들은 한 지역에 체류를 상대적으로 적게 하기에 저소득 외국인에 비해 반려견을 적게 키운다는 것을 알 수 있었습니다.

6.10 타 변수 고려

지금까지의 과정을 통해 체류기간과 반려견 수는 비례함을 알 수 있었습니다.

그런데 앞서 언급한 기사의 헤드라인에서는 2020년 1월에는 용산구가 애견밀도가 가장 높았던 것으로 나타난 것일까요?

이는 반려견을 키우는 데에는 체류기간만 영향을 주는 것이 아니기 때문입니다.

용산구의 경우, 1인당 주거면적이 넓으면서도 노인층이 유소년층에 비해 많이 사는 구이기 때문에 이러한 특성은 반려견을 키우기 용이하게 만들었을 것입니다.

따라서 마지막으로 본 조는 1인당 주거 면적과 노인층 비율을 살펴보았고 이를 통해 이들이 어느 정도의 상관관계를 갖고 있음을 알 수 있었습니다.

# A tibble: 25 x 4
   자치구   유년부양비 노년부양비 노령화지수
   <chr>         <dbl>      <dbl>      <dbl>
 1 종로구         11.4       22.8       200.
 2 중구           11.1       22.8       206.
 3 용산구         12.9       21.2       165.
 4 성동구         13.7       18.9       138.
 5 광진구         12.3       16.9       137.
 6 동대문구       12.5       22         175.
 7 중랑구         12.6       21.8       173.
 8 성북구         14.6       21.2       145.
 9 강북구         12.2       26.4       217.
10 도봉구         13.4       24         179.
# ... with 15 more rows



1인당 주거면적

Min. 1st Qu. Median Mean 3rd Qu. Max.
23.45 25.48 27.71 27.4988 28.38 34.97



유년 부양비

Min. 1st Qu. Median Mean 3rd Qu. Max.
9.8 12.5 13.4 13.732 14.7 18.4



노년 부양비

Min. 1st Qu. Median Mean 3rd Qu. Max.
16.9 18.7 20.2 20.28 21.8 26.4



노령화지수

Min. 1st Qu. Median Mean 3rd Qu. Max.
97.1 127.9 147.1 151.536 172.9 217.2



7 결론

이와 같은 결론을 냈음에도 불구하고 외국인이 국내에 체류할 때는 비자를 갱신하기보다는 자신의 비자를 연장하는 시스템이므로 외국인들이 평균적으로 얼마나 체류하는지는 알 수 없어 직접적으로 체류 기간과 반려견 수를 비교하지 못한 점,

외국인 동별 비자별 분류 자료가 2016년이 최신 자료라 2019년의 자료인 반려견과 시기가 맞지 않는 점은 이번 연구의 한계라고 할 수 있습니다.

그러나 외국인 비율은 반려견 수에 큰 관계가 없으며 오히려 체류 기간이 반려견을 키우는 데 중요한 변수임을 알아내었고,

마지막에 1인당 주거 면적과 노인층 비율도 어느 정도 변수로서 작용할 것이라고 추정한 데에서 이번 연구의 의의를 찾을 수 있었습니다.